package wmhsudoku.board;

import java.awt.Point;
import wmhsudoku.gui.Main;

public class Board {
	Map mask = new Map();
	Map sudoku = new Map();
	
	public Board() {
		
	}
	
	/**
	 * @param mask the mask to set
	 */
	public void setMask(Point coord, int value) {
		this.mask.setField(coord, value);
	}



	/**
	 * @param sudoku the sudoku to set
	 */
	public void setSudoku(Point coord, int value) {
		this.sudoku.setField(coord, value);
	}



	/**
	 * @return the mask
	 */
	public Map getMask() {
		return mask;
	}



	/**
	 * @return the sudoku
	 */
	public Map getSudoku() {
		return sudoku;
	}



	/**
	 * 0 - liczby wprowadzoane przy generacji sudoku, stałe
	 * 1 - pola do odgadnięcia
	 */
	public void generateMask() {
		for (int i=0; i<Main.SIZE; ++i) {
			for(int j=1; j<=4; ++j) {
				int column = (int)Math.floor((Math.random()*9));
				mask.setField(column, i, 1);
			}
		}
	}
	
	public void generateMask(int cos) {
		for (int i=0; i<Main.SIZE; ++i) {
			for(int j=0; j<Main.SIZE; ++j) {
				mask.setField(i,j, 1);
			}
		}
	}
	
	public void removeRandomFields() {
		for (int i=0; i<Main.SIZE; ++i) {
			for(int j=0; j<Main.SIZE; ++j) {
				if (Math.random() < 0.65) {
					sudoku.setField(i,j, 0);
					mask.setField(i,j, 1);
				}
			}
		}
	}
	
	public void invertMask() {
		for (int i=0; i<Main.SIZE; ++i) {
			for(int j=0; j<Main.SIZE; ++j) {
				if (mask.getField(i,j) > 0) {
					mask.setField(i,j, 0);
				} else {
					mask.setField(i,j, 1);
				}
			}
		}
	}
	
	public void clear() {
		for (int i=0; i<Main.SIZE; ++i) {
			for(int j=0; j<Main.SIZE; ++j) {
				if (mask.getField(i,j) > 0) {
					sudoku.setField(i,j, 0);
				}
			}
		}		
	}

}
